////////////////////////////////////////////////////////////////
// filename: object.h
// description: header file for the object class
// author: Jay Tomten (jaytomten@gmail.com)
// notes:

// namespace

// defines
#ifndef __OBJECT__
#define __OBJECT__

#define PARTICLE_PLAIN     1000
#define PARTICLE_FANCY     1001
#define PARTICLE_SPARKS    1002
#define PARTICLE_EXPLOSION 1003
#define PARTICLE_RAIN      1004
#define PARTICLE_SNOW      1005
#define PARTICLE_DUST      1006
#define PARTICLE_BLOOD     1007
#define PARTICLE_BULLETS_E 1008
#define PARTICLE_BULLETS_F 1009
#define PARTICLE_SMOKE     1010
#define WORLD_LAND         2000
#define WORLD_BUILDING_1   2001
#define WORLD_BUILDING_2   2002
#define WORLD_BUILDING_3   2003
#define WORLD_BUILDING_4   2004
#define WORLD_BUNKER       2005
#define WORLD_SKY_1        2908
#define WORLD_SKY_2        2909
#define WORLD_SKY_3        2910
#define WORLD_SKY_4        2911
#define WORLD_CLOUDS_1     2919
#define WORLD_GROUND_1     2912
#define WORLD_GRASS_1      2918
#define STORY_LEVEL_1      6501
#define STORY_LEVEL_2      6502
#define STORY_LEVEL_3      6503
#define STORY_LEVEL_4      6504
#define STORY_LEVEL_5      6505
#define STORY_LEVEL_6      6506
#define STORY_LEVEL_7      6507
#define STORY_LEVEL_8      6508
#define STORY_LEVEL_WIN    6519
#define CHAR_INFANTRY      3000
#define CHAR_ENGINEER      3001
#define CHAR_MEDIC         3002
#define CHAR_EOD           3003
#define CHAR_SF            3004
#define TEAM_GOOD          8000
#define TEAM_BAD           8001
#define TEAM_NEUTRAL       8002
#define STATE_NORM         9000
#define STATE_ENGAGING     9001
#define STATE_DEAD         9002
#define STATE_BUILDING     9003
#define STATE_DEPLOYING    9004
#define STATE_HEALING      9005
#define STATE_FIXING       9006

// includes
#include "vertex.h"

// globals

////////////////////////////////////////////////////////////////
// Object - definition of our particle class
class Object {

public:

    int    t;
    int    state;
    float  power;
    float  range;
    float  life;
    float  vel;
    int    team;
    bool   alive;
    Vertex pos;

    Object();
    ~Object();
    virtual bool Update(float d) = 0; // update the object based
    virtual void Draw() = 0; // return false if object dead, else true

private:

    // lets keep it open

};

#endif
